package org.pf.interfaces
{
	import Box2D.Dynamics.b2Body;
	import Box2D.Dynamics.b2World;
	import flash.display.Sprite;
	import flash.display.Stage;
	import org.pf.base.pfBlocks.PFCache;
	import org.pf.base.pfBlocks.PFState;
	import org.pf.base.pfSystem.PFSystemControlLayer;
	import org.pf.base.pfSystem.PFSystemLayers;
	import org.pf.interfaces.IPFSystemCache;
	
	/**
	 * ...
	 * @author zeksa'
	 */
	
	/**
	 * The IPFSystemCache interface implemented by PFSystemCache object.
	 */
	public interface IPFSystemCache
	{
		/**
		 * Function sets/refreshes all game layers to the stage.
		 * Layers used to draw graphics in game and
		 * to handle some controls/listeners.
		 */
		function initLayers():void;
		
		function get nextState():Class
		function set nextState(value:Class):void
		function get nextLevelName():String
		function set nextLevelName(value:String):void
		function get nextCache():Class
		function set nextCache(value:Class):void
		function get stage():Stage
		function set stage(value:Stage):void
		function get currentWorld():b2World
		function set currentWorld(value:b2World):void

		function get layers():PFSystemLayers
		
		/**
		 * Get current cache object interface.
		 * @copy org.pf.interfaces.IPFCache
		 */
		function get currentCache():IPFCache
		
		/**
		 * Set current cache object interface to system.
		 * @copy org.pf.interfaces.IPFCache
		 */
		function set currentCache(value:IPFCache):void
		
		/**
		 * Get current state object interface.
		 */
		function get currentState():IPFState
		
		/**
		 * Set current state object interface to system
		 * storage.
		 */
		function set currentState(value:IPFState):void
		
		function get listenersList():Array
		function set listenersList(value:Array):void
		function get enableCamera():Boolean
		function set enableCamera(value:Boolean):void
		function get cameraTo():b2Body
		function set cameraTo(value:b2Body):void
		function get gWidth():int
		function set gWidth(value:int):void
		function get gHeight():int
		function set gHeight(value:int):void
	
	}

}